package leetCode;

import cn.hutool.core.lang.Console;

/**
 * 排列硬币
 *
 * 描述：你总共有 n 枚硬币，你需要将它们摆成一个阶梯形状，第 k 行就必须正好有 k 枚硬币。
 *      给定一个数字 n，找出可形成完整阶梯行的总行数。
 *      n 是一个非负整数，并且在32位有符号整型的范围内。
 *
 * 示例 1:
 * n = 5
 * 硬币可排列成以下几行:
 * ¤
 * ¤ ¤
 * ¤ ¤
 * 因为第三行不完整，所以返回2.
 *
 * 示例 2:
 * n = 8
 * 硬币可排列成以下几行:
 * ¤
 * ¤ ¤
 * ¤ ¤ ¤
 * ¤ ¤
 * 因为第四行不完整，所以返回3.
 *
 * 链接：https://leetcode-cn.com/problems/arranging-coins
 */
public class ArrangingCoins {
    public static void main(String[] args) {
        int level = arrangingCoins(5);
        Console.log(level);
    }

    /**
     * 用总数减去每层的个数，直到层数小于个数
     */
    private static int arrangingCoins(int n){
        int i = 1;
        while (n > i) {
            n = n - i;
            i++;
        }
        if (i > n)
            return i - 1;
        return i;
    }
}
